package com.tang.db;

import java.util.List;
import java.util.Map;

/**
 * 数据访问层基础支撑接口
 * @author zhou
 *
 * @param <T>
 */
public interface BaseDao<T>
{
    Integer insert(T entity); // 插入单条记录

    Integer insertList(List<T> list); // 批量插入多条记录

    Integer update(T entity); // 更新单条记录
    
    Integer updateList(List<T> list); // 批量更新多条记录

    T getById(String id); // 根据主键查询单条记录

    Integer deleteById(String id); // 根据主键删除单条记录
    
    Integer deleteList(String id); // 根据外键批量删除多条记录
    
    void deleteList(List<T> list); // 批量删除多条记录
    
    List<T> listPage(Map<String, Object> params); // 通过封装的键值对形式的请求参数分页获取多个记录列表
    
    List<T> listById(String id); // 通过外键获取多个记录列表

    List<T> listBy(Map<String, Object> paramMap); // 通过封装的键值对形式的请求参数获取多个记录列表

    T getBy(Map<String, Object> paramMap); // 通过封装的键值对形式的请求参数获取单条记录

    String getSeqNextValue(String seqName); // 据序列名称获取下一个值

}
